home *** CD-ROM | disk | FTP | other *** search
- 10 REM COPYRIGHT (C) ANDREW COLIN 1982
- 15 V=54272:FORI=0TO28:POKEV+I,0:NEXT
- 20 IFPEEK(58677)=6THENPRINT"[147][144]";:GOTO30
- 25 PRINT"[147]";
- 30 POKE54295,0:POKE54296,15
- 40 DIM T$(4)
- 50 FORJ=1TO4:READ T$(J):NEXT J
- 60 DATA TRIANGULAR,SAWTOOTH,PULSED,NOISE
- 70 F=512:P=200:W=1:A=0:D=9:S=0:T=250
- 80 PRINT"[147]EXPERIMENTAL SOUND GENERATOR"
- 90 PRINT"[197][197][197][197][197][197][197][197][197][197][197][197][197][197][197][197][197][197][197][197][197][197][197][197][197][197][197][197]"
- 100 PRINT:PRINT"PRESS THE SPACE BAR TO HEAR THE SOUND":PRINT:
- 110 PRINT"OR TYPE THE INITIAL LETTER TO CHANGE":PRINT
- 120 PRINT"A VALUE " :PRINT:PRINT
- 130 PRINT"FREQUENCY (F) = ";F
- 140 PRINT"DURATION OR TIME (T) = ";T
- 150 PRINT"SUSTAIN LEVEL (S) = ";S
- 160 PRINT"ATTACK VALUE (A) = ";A
- 170 PRINT"DECAY VALUE (D) = ";D
- 180 PRINT"WAVEFORM TYPE (W) IS ";T$(W)
- 190 IF W=3 THEN PRINT"PULSE WIDTH (P) = ";P
- 200 GET A$:IFA$=""THEN 200
- 205 IFA$=" "THEN Z=0:GOTO610
- 207 Z=1
- 210 IF A$ <> "F" THEN 250
- 220 INPUT"NEW FREQUENCY (20-4000) ";F
- 230 IF F<20 OR F>4095 THEN GOSUB1000:GOTO200
- 240 GOTO600
- 250 IF A$<>"T"THEN 290
- 260 INPUT "NEW DURATION (1 TO 5000)";T
- 270 IF T<1 OR T>5000 THEN GOSUB1000:GOTO260
- 280 GOTO610
- 290 IFA$<>"S"THEN 330
- 300 INPUT"NEW SUSTAIN VALUE (0 TO 15)";S
- 310 IF S<0 OR S>15 THEN GOSUB1000:GOTO300
- 320 GOTO610
- 330 IFA$<>"A"THEN 370
- 340 INPUT"NEW ATTACK VALUE (0 TO 15) ";A
- 350 IF A<0 OR A>15 THEN GOSUB1000:GOTO340
- 360 GOTO610
- 370 IFA$<>"D"THEN 410
- 380 INPUT"NEW DECAY VALUE (0 TO 15) ";D
- 390 IF D<0 OR D>15 THEN GOSUB1000:GOTO380
- 400 GOTO610
- 410 IF A$<>"W"THEN 480
- 420 PRINT"NEW WAVEFORM (T,S,P OR N)";
- 425 GETA$:IFA$=""THEN 425
- 430 IFA$="T"THEN W=1:GOTO610
- 440 IFA$="S"THEN W=2:GOTO610
- 450 IFA$="P"THEN W=3:GOTO610
- 460 IFA$="N"THEN W=4:GOTO610
- 470 GOSUB1000:PRINT:GOTO420
- 480 IFA$<>"P"OR W <> 3 THEN 520
- 490 INPUT"NEW PULSE WIDTH (8 TO 999) ";P
- 500 IF P<0 OR P>999THEN GOSUB1000:GOTO490
- 510 GOTO610
- 520 IF A$<>" "THEN GOSUB1000:GOTO80
- 600 REM PLAY NOTE
- 610 Q=16*F:POKE54273,Q/256:POKE54272,(Q-32768)AND255
- 620 POKE 54275,P/8:POKE54277,16*A+D:POKE54278,16*S
- 630 POKE54276,1+2^(W+3)
- 640 FORN=1TOT:NEXTN
- 650 POKE54276,0
- 660 IF Z=1THEN 80
- 670 GOTO200
- 1000 REM ERROR WARNING
- 1010 POKE 54278,0:POKE 54277,8
- 1020 POKE 54276,0:POKE54276,17
- 1030 FORNN=100TO20STEP-1.5
- 1040 POKE54273,NN
- 1050 NEXTNN
- 1060 POKE 54276,0
- 1070 RETURN
-